package d9_inerface2_attention;

public class Text2 {
    public static void main(String[] args) {
        // 日标：了解使用接口的几点注意事项。
        // 1、一个接口继承多个接口，如果多个接口中存在方法签名冲突，则此时不支持多继承。
        // 2、一个类实现多个接口，如果多个接口中存在方法签名冲突，则此时不支持多实现。
        // 3、一个类继承了父类，又同时实现了接口，父类中和接口中有同名的默认方法，实现类会优先用父类的。
        // 4、一个类实现了多个接口，多个接口中存在同名的默认方法，可以不冲突，这个类重写该方法即可。

        Zi z = new Zi();
        z.run();

        N n = new N();
        n.test();
    }
}
// 1、一个接口继承多个接口，如果多个接口中存在方法签名冲突，则此时不支持多继承。
interface I{
    void text1();
}

interface J{
   String text1();
}
//interface K extends I,J{}

// 2、一个类实现多个接口，如果多个接口中存在方法签名冲突，则此时不支持多实现。
//class E  implements  I,J{}

// 3、一个类继承了父类，又同时实现了接口，父类中和接口中有同名的默认方法，实现类会优先用父类的。
class Fu{
    public void run(){
        System.out.println("父类的方法被执行了");
    }
}
interface IT{
    default void run(){
        System.out.println("接口中IT的run方法被执行了");
    }
}
class Zi extends  Fu implements IT{

}

// 4、一个类实现了多个接口，多个接口中存在同名的默认方法，可以不冲突，这个类重写该方法即可。
interface IT1{
    default void test(){
        System.out.println("IT1");
    }
}

interface IT2{
    default void test(){
        System.out.println("IT2");
    }
}

class N implements IT1,IT2{

    @Override
    public void test() {
        System.out.println("自己的");
    }
}